\begin{landscape}
%\oddsidemargin=-1cm
\newcolumntype{C}{>{\centering}X}%
\addtolength{\textwidth}{60pt}
\newcommand{\tabletextfontsize}{\scriptsize}
\newcommand{\mvncolwidth}{6.3cm}
\newcommand{\pdecolwidth}{6.3cm}
\begin{figure}[H]
\caption{Confrontation \Gls{maven} et Eclipse \GLS{pde}}
\centering
\small
\begin{tabularx}{1.2\textwidth}{|C|C|C|}
\hline
 &  \textbf{\Gls{maven}} & \textbf{\Gls{eclipse}} \tabularnewline
\hline
\textbf{La structure de projet}
&
\begin{minipage}{\mvncolwidth}
\medskip
\tabletextfontsize
\begin{itemize}
  \item \textbf{src/main/java :} Répertoire de sources par défaut. 
  \item \textbf{src/main/resources :} Répertoire de ressources par défaut.
  \item \textbf{pom.xml :} Situé à la racine du projet permet sa configuration.
\end{itemize}
\medskip
\end{minipage}
&
\begin{minipage}{\pdecolwidth}
\medskip
\tabletextfontsize
\begin{itemize}
  \item \textbf{src :} Le répertoire de sources par défaut.
  \item \textbf{sch\'ema :} Le répertoire contenant les fichiers des points
  d'extension du plugin.
  \item \textbf{meta-inf/manifest.mf :}  Pour la configuration du bundle et la
  gestion des dépendances.
  \item \textbf{build.properties :} A la racine du projet permet de configurer
  le build et le contenu du package.
  \item \textbf{plugin.xml :} La configuration du plugin et de ses points
  d'extension. 
\end{itemize}
\medskip
\end{minipage}
\tabularnewline
\hline
\textbf{La gestion des dépendances}    
&
\begin{minipage}{\mvncolwidth}
\medskip
\tabletextfontsize
Résolution des dépendances par interrogation de dépôts ayant un format spécifique. 
Synchronisation des dépendances situées sur des dépôts distants avec un dépôt local 
pour accélérer le processus de build.\\
\textbf{\underline{EX}:} La version 2.1 du jar \textbf{commons-lang.jar} sera
stockée comme suit dans un dépôt maven:
\begin{itemize}
  \item \textbf{repository/commons-lang/commons-lang/2.1/commons-lang-2.1.jar}
\end{itemize} 
\medskip
\end{minipage}
&
\begin{minipage}{\pdecolwidth}
\medskip
\tabletextfontsize
Les plugins \gls{eclipse} peuvent être interdépendants. La résolution des
plugins au runtime se fait selon les mécanismes décrits dans la spécification OSGI, Equinox étant l'implémentation proposée 
par \gls{eclipse} de cette spécification. Les plugins et autres fragments sont déployés dans des dépôts 
\gls{eclipse} au format P2 ou sur des sites de mises à jour de produits \gls{eclipse}. Un site de mise à jour peut 
être structuré de manière suivante:
\begin{itemize}
  \item \textbf{plugins/ :} Répertoire contenant l'ensemble des plugins du
  site.
  \item \textbf{features/ :} Répertoire contenant l'ensemble des features du
  site.
  \item \textbf{contents.jar, artifacts.jar :} Utilisés pour décrire le
  contenu du site.
\end{itemize} 
\medskip
\end{minipage}
\tabularnewline
\hline
\textbf{La gestion des versions}
&
\begin{minipage}{\mvncolwidth}
\medskip
\tabletextfontsize
Les projets maven sont en générale versionnés suivant un numéro de version et un
timestamp indiquant le moment du build. Ces numéros de version peuvent être déclarés 
comme suit dans le fichier pom.xml du projet: \textbf{1.0.0-SNAPSHOT}; dans ce
cas SNAPSHOT est remplacé au moment du build par une date.
\medskip
\end{minipage}
&
\begin{minipage}{\pdecolwidth}
\medskip
\tabletextfontsize
Les plugins \gls{eclipse} sont souvent versionnés à l'aide d'un numéro de version et
d'un \textbf{qualifier} qui permet de caractériser le build. Les versions de
plugins sont souvent déclarés sous la forme suivante dans leurs manifestes:
\textbf{1.0.0.qualifier}. La génération du qualifier peut être paramétrée dans
le fichier \textbf{build.properties} du bundle, et par défaut elle produit une
chaîne de caractère représentant le moment du build.
\medskip
\end{minipage}
\tabularnewline
\hline
\end{tabularx}
\label{tab:maven_vs_pde}
\end{figure}
\end{landscape}
